home *** CD-ROM | disk | FTP | other *** search
/ Enigma Amiga Life 109 / EnigmaAmiga109CD.iso / dalla rivista / amiga.free / sorgenti vari / wolfedit2 2.0.4 source.sit / WolfEdit2 2.0.4 Source / UEditObjects.p < prev    next >
Text File  |  1995-11-03  |  3KB  |  121 lines

  1. unit UEditObjects;
  2.  
  3. interface
  4.     uses
  5.         UWolfDoc;
  6.  
  7.     procedure EditObjects (mapList: TMapListDoc);
  8.  
  9. implementation
  10.     uses
  11.         UEditArt;
  12.  
  13.     const
  14.  
  15.         objectEditDlogID = 133;
  16.         paletteItem = 2;
  17.         imageItem = 3;
  18.  
  19.         maxObjectArtIndex = lastEditableObjectCode - firstObjectCode;
  20.  
  21.     type
  22.  
  23.         TObjectImagePalette = object(TImagePalette)
  24.                 procedure IObjectImagePalette;
  25.                 procedure DrawImage (itemNo: integer; r: Rect);
  26.                 override;
  27.                 function ItemSelectable (item: integer): boolean;
  28.                 override;
  29.             end;
  30.  
  31.         TObjectEditDialog = object(TArtEditDialog)
  32.                 procedure IObjectEditDialog (itsMapList: TMapListDoc);
  33.                 procedure UninstallArt;
  34.                 override;
  35.                 procedure InstallArt;
  36.                 override;
  37.                 function ArtImageType: CustomImageType;
  38.                 override;
  39.                 function ArtImageCode: integer;
  40.                 override;
  41.                 procedure ChangeImage (gworld: GWorldPtr; isThumbnail: boolean);
  42.                 override;
  43.             end;
  44.  
  45.     procedure TObjectImagePalette.IObjectImagePalette;
  46.     begin
  47.         IImagePalette(16, maxObjectArtIndex + 1);
  48.         fDialog := nil;
  49.     end;
  50.  
  51.     procedure TObjectImagePalette.DrawImage (itemNo: integer; r: Rect);
  52.         var
  53.             n: integer;
  54.     begin
  55.         fDialog.fMapList.PlotObject(firstObjectCode + itemNo, 0, r);
  56.     end;
  57.  
  58.     function TObjectImagePalette.ItemSelectable (item: integer): boolean;
  59.     begin
  60.         ItemSelectable := fDialog.fMapList.ObjectAvailable(firstObjectCode + item);
  61.     end;
  62.  
  63.     procedure TObjectEditDialog.IObjectEditDialog (itsMapList: TMapListDoc);
  64.         var
  65.             palette: TObjectImagePalette;
  66.     begin
  67.         new(palette);
  68.         palette.IObjectImagePalette;
  69.         IArtEditDialog(objectEditDlogID, palette, itsMapList, true);
  70.         palette.fDialog := self;
  71.     end;
  72.  
  73.     procedure TObjectEditDialog.UninstallArt;
  74.     begin
  75.         if (fCurrentArt >= 0) & (fArtView.fChanged) then begin
  76.                 fMapList.InstallObjectArt(firstObjectBrgrID + fCurrentArt, fArtView.ExtractObject);
  77.                 fArtView.fChanged := false;
  78.             end;
  79.     end;
  80.  
  81.     procedure TObjectEditDialog.InstallArt;
  82.     begin
  83.         if fCurrentArt >= 0 then
  84.             fArtView.InstallObject(fMapList.GetObjectArt(firstObjectBrgrID + fCurrentArt));
  85.     end;
  86.  
  87.     function TObjectEditDialog.ArtImageType: CustomImageType;
  88.     begin
  89.         ArtImageType := objectImage;
  90.     end;
  91.  
  92.     function TObjectEditDialog.ArtImageCode: integer;
  93.     begin
  94.         ArtImageCode := $17 + fCurrentArt;
  95.     end;
  96.  
  97.     procedure TObjectEditDialog.ChangeImage (gworld: GWorldPtr; isThumbnail: boolean);
  98.     begin
  99.         ChangeObjectImage(ArtImageCode, gworld);
  100.     end;
  101.  
  102.     procedure EditObjects (mapList: TMapListDoc);
  103.         var
  104.             dlog: TObjectEditDialog;
  105.  
  106.         procedure CheckWindow (win: TWindow);
  107.         begin
  108.             if member(win, TObjectEditDialog) then begin
  109.                     win.Select;
  110.                     exit(EditObjects);
  111.                 end;
  112.         end;
  113.  
  114.     begin
  115.         mapList.EachWindowDo(CheckWindow);
  116.         new(dlog);
  117.         dlog.IObjectEditDialog(mapList);
  118.         dlog.Show;
  119.     end;
  120.  
  121. end.